unit ClsItemFicha;

interface

uses Dm,dbtables,biblio,clsNomesProduto;

type
  TItemFicha=Class(TObject)
    private
      Pro_codigo    : String;
      Var_Codigo    : String;
      Pro_codigo2   : String;
    public
      Fic_Quantidade    : Double;
      function Gravar(p_Pro_codigo,p_Var_codigo,p_Pro_codigo2:string):byte;
      function Recuperar(p_Pro_codigo,p_Var_codigo,p_Pro_codigo2:string):byte;
      function Excluir_Componente(p_Pro_codigo,p_Var_codigo,p_Pro_codigo2:String):Byte;
      function Excluir(p_Pro_codigo,p_Var_codigo:String):Byte;
      procedure Consultar(var p_q:TQuery; p_Pro_codigo,p_Var_codigo,p_desc:String);
  end;

implementation

function TItemFicha.Gravar;
var tq:TQuery;
begin
  tq:=Tquery.Create(DmInt);
  tq.databasename:=dmint.Db.DatabaseName;
  tq.active:=False;
  tq.sql.clear;
  tq.params.clear;
  tq.sql.add('SELECT * FROM ItemFicha where Pro_codigo=:k_Pro_codigo and Var_Codigo=:k_Var_Codigo and Pro_codigo2=:k_Pro_codigo2');
  tq.parambyname('k_Pro_codigo').asstring:=p_Pro_codigo;
  tq.parambyname('k_Var_codigo').asstring:=strzero(p_Var_codigo,4);
  tq.parambyname('k_Pro_codigo2').asstring:=p_Pro_codigo2;
  tq.open;
  if tq.eof then begin
    tq.sql.clear; tq.params.clear;
    tq.sql.add('INSERT INTO ItemFicha VALUES(:k_Pro_codigo,'+
    ':k_Var_Codigo,'+
    ':k_Pro_Codigo2,'+
    ':k_Fic_Quantidade)');
  end else begin
    tq.sql.clear; tq.params.clear;
    tq.sql.add('UPDATE ItemFicha SET '+
    'Fic_Quantidade    =:k_Fic_Quantidade '+
    'WHERE Pro_codigo=:k_Pro_codigo and Var_Codigo=:k_Var_Codigo and Pro_Codigo2=:k_Pro_Codigo2');
  end;
  tq.parambyname('k_Pro_codigo').asstring:=p_Pro_codigo;
  tq.parambyname('k_Var_codigo').asstring:=strzero(p_var_codigo,4);
  tq.parambyname('k_Pro_codigo2').asstring:=Pro_codigo2;
  tq.parambyname('k_Fic_Quantidade').asfloat:=Fic_Quantidade;
  tq.close;
  tq.execsql;
  result:=1;
  tq.close;
  tq.Free;
end;

function TItemFicha.Recuperar;
var tq:TQuery;
begin
  tq:=Tquery.Create(dmint);
  tq.databasename:=DmInt.Db.DatabaseName;
  tq.active:=False;
  tq.sql.clear;
  tq.sql.add('SELECT * FROM ItemFicha WHERE Pro_codigo=:k_Pro_codigo and Var_Codigo=:k_Var_Codigo and Pro_Codigo2=:k_Pro_Codigo2');
  tq.Params[0].asstring:=p_Pro_codigo;
  tq.params[1].asstring:=strzero(p_var_codigo,4);
  tq.params[2].asstring:=p_pro_codigo2;
  tq.open;
  Pro_codigo     := p_Pro_codigo;
  Var_Codigo     := p_Var_Codigo;
  Pro_Codigo2    := p_Pro_Codigo2;
  if tq.eof then begin
    Fic_Quantidade    := 0;
    Result:=0;
  end else begin
    Fic_Quantidade    := tq.fieldbyname('Fic_Quantidade').asfloat;
    Result:=1;
  end;
  tq.Close;
  tq.Free;
end;

function TItemFicha.Excluir_Componente;
var tq:TQuery;
begin
  tq:=Tquery.Create(dmint);
  tq.databasename:=dmint.db.databasename;
  tq.active:=False;
  tq.close;
  tq.sql.Clear;
  tq.params.clear;
  tq.sql.add('DELETE FROM ItemFicha WHERE Pro_codigo=:k_Pro_codigo and Var_Codigo=:k_Var_Codigo and Pro_Codigo2=:k_Pro_Codigo2');
  tq.parambyname('k_Pro_codigo').asstring:=p_Pro_codigo;
  tq.parambyname('k_Var_codigo').asstring:=strzero(p_Var_codigo,4);
  tq.parambyname('k_Pro_codigo2').asstring:=p_Pro_codigo2;
  tq.execSQL;
  Result:=1;
  tq.close;
  tq.Free;
end;

function TItemFicha.Excluir;
var tq:TQuery;
begin
  tq:=Tquery.Create(dmint);
  tq.databasename:=dmint.db.databasename;
  tq.active:=False;
  tq.close;
  tq.sql.Clear;
  tq.params.clear;
  tq.sql.add('DELETE FROM ItemFicha WHERE Pro_codigo=:k_Pro_codigo and Var_Codigo=:k_Var_Codigo');
  tq.parambyname('k_Pro_codigo').asstring:=p_Pro_codigo;
  tq.parambyname('k_Var_codigo').asstring:=strzero(p_Var_codigo,4);
  tq.execSQL;
  Result:=1;
  tq.close;
  tq.Free;
end;

procedure TItemFicha.Consultar;
begin
  p_q.sql.Clear;
  p_q.Params.Clear;
  p_q.sql.add('Select * from ItemFicha, NomesProduto where ItemFicha.Pro_codigo2=NomesProduto.Pro_codigo and ItemFicha.Pro_Codigo=:k_pro_codigo and ItemFicha.Var_codigo=:k_var_codigo and NomesProduto.Nomp_descricao>=:k_Nomp_descricao');
  p_q.parambyname('k_Pro_Codigo').asstring:=p_pro_codigo;
  p_q.parambyname('k_Var_Codigo').asstring:=strzero(p_var_codigo,4);
  p_q.parambyname('k_Nomp_descricao').asstring:=p_desc;
end;

end.
